[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
미니프로젝트 9 | ✅저자: 이유정(박사)
프로젝트 코드명: DynamicReportGen
프로젝트 유형: 사용자 활동 통계 리포트 생성기
🖥️ 프로젝트 개요
웹사이트나 앱에서 수집된 사용자 활동 데이터를 바탕으로,
사용자별 접속 횟수, 클릭 수, 구매 수 등 다양한 항목을 받아
가공된 통계 리포트를 생성하는 프로그램을 만듭니다.
데이터 항목은 유동적이며, 항목 수나 종류가 사용자마다 다를 수 있으므로 **가변 키워드 인자**를 사용해 처리합니다.
◽ 이 프로젝트를 통해 자연스럽게 적용되는 내용
- 함수 정의 및 호출
- 반환값, 리턴문 활용
- 기본값 매개변수
- 가변 키워드 인자 (
**kwargs
) - 통계성 계산 처리 (합계, 비율 등)
📄 기능 요구사항 (Functional Requirements)
- FR-01 사용자 이름과 활동 정보를 받아 통계 리포트 생성
- FR-02 활동 정보는 딕셔너리 형태로 유동적으로 입력받음 (ex. login=5, click=13 등)
- FR-03 전체 활동 수 계산 후, 각 활동의 비율 출력
- FR-04 활동이 없을 경우 기본 리포트 표시
📄 비기능 요구사항 (Non-Functional Requirements)
- 키워드 인자로 어떤 항목이 오든 처리 가능해야 함
- 항목 수와 종류는 사용자마다 다를 수 있음
- 비어 있는 경우 안내 메시지 출력
- 전체 코드 가독성 유지
✅ 출력 포맷 구성:
📊 [사용자 활동 리포트 - 영희]
총 활동 수: 28회
- login: 5회 (17.9%)
- click: 13회 (46.4%)
- purchase: 10회 (35.7%)
📊 [사용자 활동 리포트 - 준호]
활동 기록이 없습니다.
✅ 정답 코드:
def generate_report(username, **activities):
print(f"\n📊 [사용자 활동 리포트 - {username}]")
if not activities:
print("활동 기록이 없습니다.")
return
total = sum(activities.values())
print(f"총 활동 수: {total}회")
for key, value in activities.items():
percent = (value / total) * 100
print(f"- {key}: {value}회 ({percent:.1f}%)")
# 테스트 실행
generate_report("영희", login=5, click=13, purchase=10)
generate_report("준호") # 활동 없음
🔍 코드 해설:
username
은 필수 인자로 받고, 나머지 활동 항목은**kwargs
로 처리if not activities:
로 비어있는 활동도 유연하게 대응- 활동 수의 합을 기준으로 각 항목의 비율 계산
- 실무에서 많이 쓰이는 데이터 요약 통계 형태와 유사